<?php

/**
 * 开放接口
 * linruiyan@2013年4月2日
 * 开放接口本身应该提供足够接入帮助
 * 现在将接口下放到各个业务插件中去。open本身提供了一个接口文档中心
 * 
 */
class OpenAdmin extends AdminBase {


	/**
	 * 构造函数
	 *
	 */
	public function __construct(){
		parent::__construct();
		if(in_array(N_ACTION,array('index','edit','save','close','del','apiList','apiEdit','apiSave','view','fieldEdit','fieldSave','fieldDel'))){
			n_mod("skin")->header();
		}
		

	}

	public function test(){
		$rs =array("test");
		// echo n_api('debug')->show();
		$this->_html("test",$rs);
	}

	public function unionTest(){
		$param = $this->param("content:char,title:char");
		$content = '<div style="line-height:160%;font-size:14px;">【谎言】江西赣州浙江嘉兴河南平顶山连锁销售经营:是传销吗？合法吗？赚钱吗？<div><span style="line-height: 18px;"><br></span><div>【谎言】江西赣州浙江嘉兴河南平顶山连锁销售经营:是传销吗？合法吗？赚钱吗？</div><div><br></div><div>【谎言】江西赣州浙江嘉兴河南平顶山连锁销售经营:是传销吗？合法吗？赚钱吗？</div></div><div><br></div><div>【谎言】江西赣州浙江嘉兴河南平顶山连锁销售经营:是传销吗？合法吗？赚钱吗？</div><div><br></div><div>【谎言】江西赣州浙江嘉兴河南平顶山连锁销售经营:是传销吗？合法吗？赚钱吗？</div><div><br></div><div>【谎言】江西赣州浙江嘉兴河南平顶山连锁销售经营:是传销吗？合法吗？赚钱吗？</div><div><br></div><div><br></div><div><div style="line-height: 22px;"><div style="line-height: 22px;">;◥◣▁★【天峰】QQ750<span style="line-height: 22px; white-space: pre;">	</span>329<span style="line-height: 22px; white-space: pre;">	</span>571<span style="line-height: 22px; white-space: pre;">	</span>&nbsp;愿与朋友一起交流探讨行业【内幕】★▁▁◢◤</div><div style="line-height: 22px;">&nbsp;&nbsp;</div><div style="line-height: 22px;">◥◣▁★【天峰】QQ750<span style="line-height: 22px; white-space: pre;">	</span>329<span style="line-height: 22px; white-space: pre;">	</span>571<span style="line-height: 22px; white-space: pre;">	</span>&nbsp;愿与朋友一起交流探讨行业【内幕】★▁▁◢◤</div></div><div style="line-height: 22px;"><br></div></div><div><br></div><div><br></div><div><br></div><div><div>朋友：我敢【剖腹】：说：这个行业不是传Xiao，有着本质的区别，毕竟已经隐秘运行了快十五年了。行业没有立法谈不上违 法，当然也谈不上合法，国-家引进一个新项目，一上来就立法，势必严重阻碍了其发展，所以，刚开始是先给其充足的发展空间，通过宏 观调 控观察 ，等发展到一定程度了再立法，设立门槛。行业是G家引进的（朋友们注意是是引进不属于国家的项目），由民间运行，引用行业人士的一句经典话来说就是行业适应每一个人，但不是每个人都适合去做，行业是好，其实我们应该明白不管什么行业有失败的，也有成功</div><div><br></div><div><br></div><div><br></div><div><br></div><div>;◥◣▁★【天峰】QQ750<span style="white-space:pre">	</span>329<span style="white-space:pre">	</span>571<span style="white-space:pre">	</span> 愿与朋友一起交流探讨行业【内幕】★▁▁◢◤</div><div>&nbsp;&nbsp;</div><div>◥◣▁★【天峰】QQ750<span style="white-space:pre">	</span>329<span style="white-space:pre">	</span>571<span style="white-space:pre">	</span> 愿与朋友一起交流探讨行业【内幕】★▁▁◢◤</div></div><div><br></div><div><br></div><div><div>成功需要具备必备条件。我综述一下：</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>1、除投资份额需要的资金，还需要雄厚的后备运作资金；从事异地资 夲运作 行业必须要去异地蹲守，这就意味这断了我们的后路钱只出不进，每个人的资金都是有限的，在异地蹲守期间，我们需要房租，需要伙食费，来新人的时候需要接新朋友的费用，接待一个新人过去用了差不多1000块，难招呼的还更多。而且，我们都是靠电话联系发展，一个月的电话费都的话也得上百块，虽然说，只要能把新朋友留下来做行业，什么都是值得的，但是，我们谁敢保证，我们叫去的朋友都能理解，都能跟我们从事行业？&nbsp;</div><div><br></div><div><br></div><div><br></div><div><br></div><div>2、需要有很好的人脉关系：虽说我们每个人只要找三个合作伙伴，听起来感觉挺简单的，但是，真的简单吗？因为需要谎言邀约，加上G家宏观调控，所以我们的邀约对象就局限在我们的亲朋好友，能够理解谎言的还好说，要是不理解，回到家里乱说我么干那个啥的（呵呵你们懂的）就会破坏我们的市场，就算我们的朋友留下了来，由于朋友之间都是互相认识的，又会存在争市场的尴尬局面，就算你把你的三个人都摆齐了，但是，每个人的能力不同，你能保证你下面的人都能发展到三个人吗？</div><div>3、需要做一个级别去感悟一个级别：当我们去考察（异地连=锁=经=营的时候），我们是听不到行业任何不好的消息，听的的最多的就是是某某经理马上要上上总了，某某老总一家人在从事，赚了多少钱，买了什么名车，买了什么豪宅，但是，他们真是赚了吗？真的买车买房了吗？有谁亲眼见到了？而且在行业里不准问别人来多久了？不准问别人什么级别了？不准问别人做了多少份？还不准有消极抱怨的情绪，如果真的是百分百成功的好行业，有必要弄得如此神秘吗？ 4、最伤人的是需要谎言邀约：虽说谎言分善意与恶意，但是我们应该知道，谁都不愿意被别人骗，能够理解的还好，不能理解的破坏了我们的市场就不说了，弄得感情也没了，在行业里有多少恋人分手？亲人反目？朋友结仇？这不都是谎言惹得祸吗？&nbsp;</div><div><br></div><div><br></div><div><br></div><div>◥◣▁★【天峰】QQ750<span style="white-space:pre">	</span>329<span style="white-space:pre">	</span>571<span style="white-space:pre">	</span> 愿与朋友一起交流探讨行业【内幕】★▁▁◢◤</div><div>&nbsp;&nbsp;</div><div>◥◣▁★【天峰】QQ750<span style="white-space:pre">	</span>329<span style="white-space:pre">	</span>571<span style="white-space:pre">	</span> 愿与朋友一起交流探讨行业【内幕】★▁▁◢◤</div></div><div><br></div><div><div><br></div><div>这些实际情况不光我有很多朋友们都遇到过1.风险大高起点申购21单要一次性投-资6 9 8 0 0元，同时，做行-业的战线比想象的要长，甚至要长得多，您必须要有充足的运-作-资-金，这样您才有坚持不懈的资-本，就如同打仗一样，您得有子弹才行。行-业里有很多因为后面没有钱生活，只能出去打工挣些钱再过来或者干脆含恨离去。我接触的众多做异-地的朋友中，有相当一部分半年都没有发展人，而且后面借钱在异-地-硬-撑，因为没有成功不甘-心，也不敢回家面对亲人朋-友，有时候看到他们真的让人感到心-寒，这个行-业虽-好，但是一部分人做成穷人，不仅把自己做成穷人，而且连被叫过去的亲人朋-友也做的不堪入目啊，最后甚至出现反目成仇的局面。2．压-力太大行-业里面的大多数人都背负着极大的压-力，这些压-力大概有这样几种情况：第一种情况是市场破-坏的压-力；第二种情况是发展困-难的压-力；第三种情况是没钱生-存的压-力。第四种情况是能力欠-缺的压-力。第五种情况是宏观调-控及道-德方-面的压-力。其实在这个行-业里的每一个人都承-担着这样的压-力，每个人在长期发展不动人时都可能处在一个崩-溃的边沿，每天都接受着痛-苦的煎-熬。 3．谎-言-邀约做异-地一般需要通过谎-言-邀-约把人带到异-地，被邀-约的人一般都是自己最亲的亲人和最好的朋-友，因为行-业的邀-约原则为&ldquo;先亲后疏，先近后远、先强后弱&rdquo;，而这些亲朋-好友和您的感-情都是经过很多年才培-养出来的，如果合作愉快当然最好，假如合作失-败，将很容易失去亲-情、友-情和爱-情，这么多年的人脉和名声有可能便毁于一旦&nbsp;</div><div><br></div><div><br></div><div><br></div><div><br></div><div>从事行业过程中面临的困难如下：</div><div>1.投资风险大，赔钱率极高。只要认可这个行业，至少要投资【南方】1份3800元，【北方】2900元，这还没什么，投资1份&mdash;4份也不是很严重，投资高起点11份或者21份或者65份，那就是比较大的投资了。有钱人还无所谓，关键是从事资夲运作、连suo销shou的绝大部分人都是穷人，是农民、工人、退休职工、大学生等，他们是典型的下层老百姓，甚至是弱势群体，他们中的大部分人为了从事行业，都会借钱、贷款、变卖家产或者房子，或者找家里要钱，或者转让自己的生意等等，但是就我所看到的现象，&nbsp;</div><div>2，开支大，在外地还要房租、日常生活费用、来人招待费用、考察费用，必须去异地来往交通费用、通讯费用，最致命的是要么你要辞职要么要中断原有家中的生意去异地坚守，意味着你原有收入的中断，所以没有很好的经济基础做后盾你将背负沉重的经济压力和精神压力，所以很多人中途坚守不下去的原因是无奈.&nbsp;</div><div>3.要有时间：如果不辞职或家中生意不中断，采取来回两地跑，不仅徒增往返交通费用，两边的事情都做不好，还会破坏市场，引起恶性循环，更加大精神压力。&nbsp;</div><div><br></div><div><br></div><div>就说我本身的阅历，1年多的异地蹲守，现已把我锻炼成了一个可以吃苦耐劳的人，也让我理解了看起来简略，做起来难的道理。回忆刚来异地调查的时分，我由极度反感到后来的高度疯狂，只用了6天的时刻就振奋的参加到了职业，这样的温度坚持了一个多月，这段时刻内，上级教师们说我不像我了，像是一个 &ldquo;成功者，所以我就带着&ldquo;成功者&rdquo;的气派去邀约我的兄弟，可是，成果并没有我幻想的好，兄弟们像是早知道相同，用各种托言躲避我。一个多月的时刻，我本人烧的通红，可是却没有做出任何成绩，我的温度降下来了，我逐渐的康复了沉着，后来，在上级教师的协助下，我结尾仍是带来了几位兄弟并且入了单，但他们也像曩昔的我相同，从高度疯狂到灰心丧气，在宏大的压力下，结尾没坚持下去，打道回府了。我不可否认，这个项目是个极好的项目，合适大家来出资创业，并且在国家的宏观调控下，为贫困地区的开展做出了出色的奉献。可是，项目再好，不必定每小我能克服运作中呈现的难题。&nbsp;</div><div><br></div><div>这个特定的行业本身由一个巨大的&ldquo;骗&rdquo;局在维系，但是这个巨大的&ldquo;骗&rdquo;局蒙&ldquo;骗&rdquo;了除最高级别老总以外的所有人，包括所有&ldquo;讲师&rdquo;，他们自己也不清楚自己被&ldquo;骗&rdquo;的事实，所才他们所做的、所讲的并不违心，大家都一样成为了受害者和牺牲品　　他们对在连锁经营行业的成功有一种渴求，这种渴求的程度远远超出了大众的想象，用大家的话说，这是一种忍辱负重的渴求，他们相信，只要自己成功赚到钱了，就能够让亲朋好友的原谅和理解，成功就是最好的解释。　　很多人在这条路上发现这条路越走越窄，越走越艰辛，但是他们没有退路。这些人没有勇气面对社会现实，没有脸面面对亲人朋友。，他们中的很多人虽然看不到多少前途和光明，但是他们却依然坚持着自己的信念，为那一点点微薄的希望而苦苦寻觅，因为除了这样他们别无选择，在他们眼里，坚持下去就可能取得成功。同时，一个很重要的因素是他们呆在这个群体中能够不会收到大家的歧视和偏见，这里的每一个人都是相互理解的，心心相通、同病相怜。大家的生活中虽然清苦，但是没有多大的思想压力，能找到共同的话题，共同语言。　　这是一群无辜的人，他们犯错误的根源在于人性的弱点，这个弱点是人类社会所共同的。　　要走出这种困境，这些人需要亲人、朋友、社会大众的宽容。给他们多一点点爱，将拯救这些无辜者的灵魂。　　连锁经营所隐藏的秘密只有最高级别高级业务员能够解释清楚，但是这个级别的人出于自身经济利益的保护以及各方面的巨大压力，他们不会站出来揭露这个&ldquo;骗&rdquo;局，老总们有老总们的无奈。　没有退路――继续在痛苦挣扎。越陷越深---拯救你的只有你自己。等等，我来帮你解密吧！想分享的朋友加我详聊吧！全天在线真挚沟通&nbsp;</div><div><br></div><div><br></div><div>◥◣▁★【天峰】QQ750<span style="white-space:pre">	</span>329<span style="white-space:pre">	</span>571<span style="white-space:pre">	</span> 愿与朋友一起交流探讨行业【内幕】★▁▁◢◤</div><div>&nbsp;&nbsp;</div><div>◥◣▁★【天峰】QQ750<span style="white-space:pre">	</span>329<span style="white-space:pre">	</span>571<span style="white-space:pre">	</span> 愿与朋友一起交流探讨行业【内幕】★▁▁◢◤</div><div>&nbsp;</div><div><br></div></div><div><br></div></div>';

		if (!empty($param['content'])) {
			$content = $param['content'];
		}

		if (!empty($param['title'])) {
			$title = $param['title'];
		}

		$content = $content.$title;

		$pinfo = '4';
		$scode = 'blog';
		$ip = '127.0.0.1';
		$id = 'test@sohu.com';
		$max = 5;

		$response = array();

		//预处理
		$start = microtime(true)*1000;
		$rs = n_api('preprocess')->preprocess($content);
		$preTime =microtime(true)*1000 - $start;

		//黑名单
		$start = microtime(true)*1000;
		$blackrs=n_api('blackeggs')->extractinfo($rs['reallflag_content']);
		$response['black'] =n_api('blackeggs')->Blackeggs($pinfo,$blackrs);
		$backTime =microtime(true)*1000 - $start;
		
		//分词
		$start = microtime(true)*1000;
		$response['split'] = n_api('common')->tcpClient2('cws', 'cut', array("text"=>$rs['lapse_content']), '10.10.126.165', 8089);
		$splitTime =microtime(true)*1000 - $start;
		// var_dump($rs['lapse_content']);

		//关键词
		$start = microtime(true)*1000;
		$rs['aimg_content'] = str_replace(' ', '[n:blank]', $rs['aimg_content']);
		$rs['aimg_content'] = str_ireplace(array("\n","\r","\t","\0"), "", $rs['aimg_content']);
		// $rs['aimg_content'] = rawurlencode($rs['aimg_content']);
		$rs['aimg_content'] = strtolower($rs['aimg_content']);
		$cate_id = array(2,3,4,6,9,10);
		$response['kword'] = n_api('kword')->kwdMatch($cate_id,$rs['aimg_content']);
		$kwdTime =microtime(true)*1000 - $start;

		//idip
		$start = microtime(true)*1000;
		for ($i=0; $i < 2; $i++) { 
			$response['idip'] = n_api('idip')->test($max,$scode,$ip,$id);
		}
		$idipTime =microtime(true)*1000 - $start;

		//贝叶斯
		$start = microtime(true)*1000;
		$ary = array('content' => $content, 'title' => $title);
      	$response['bayes'] = n_api('common')->tcpClient2('antispam', 'judge', $ary, '10.10.126.165', 8080);
      	$bayesTime =microtime(true)*1000 - $start;

		echo "<pre>";
		var_dump($response);
		echo n_api('debug')->show();
		echo "<br />";
		echo "【预处理】：".round($preTime,3)."毫秒";
		echo "<br />";
		echo "【黑名单】：".round($backTime,3)."毫秒";
		echo "<br />";
		echo "【分词】：".round($splitTime,3)."毫秒";
		echo "<br />";
		echo "【关键词】：".round($kwdTime,3)."毫秒";
		echo "<br />";
		echo "【IDIP】：".round($idipTime,3)."毫秒";
		echo "<br />";
		echo "【贝叶斯】：".round($bayesTime,3)."毫秒";
	}
	
	public function index(){
		$rs['data'] = n_api("mysql")->db001->select("select * from open_main order by seq desc");
		$rs['log'] = n_api("open")->getLog(10);
		$this->_html("index",$rs);
	}
	public function edit(){
		$param = $this->param("id:uint:ignore");


		$mysql = n_api("mysql")->db001;
		$rs['pbox'] = n_api("pbox")->getList();
		$rs['exists'] = $mysql->selectIndex("select pbox_id as id,pbox_id from open_main");
		if(!empty($param['id'])){
			$rs['info'] = $mysql->get("open_main",$param['id']);
		}
		$this->_html("edit",$rs);
	
	}
	/**
	 * 保存开放接口
	 */
	public function save(){
		$param = $this->param("pbox_id:uint,
									seq:uint");
		api("mysql")->db001->save("open_main",$param);
		$this->_html("save");		
	}
	public function close(){
		$param = $this->param("id:uint,state:char");
		if(!in_array($param['state'],array('Y','N'))){
			throw new PException("状态不正确");
		}
		n_api("mysql")->db001->update("open_main",array('isclose'=>$param['state']),"id={$param['id']}");
		
		$this->_html("close");
	}
	public function del(){
		$param = $this->param("id:uint");
		
		$msyql = n_api("mysql")->db001;
		$oinfo = $mysql->get("open_main",$param['id']);
		if(empty($oinfo)){
			throw new PException("找不到插件文档");
		}
		$mysql->del("open_main",$param['id']);
		
		$this->_html("del");
		
	}

	public function apiList(){}
	
	public function apiEdit(){
		$param = $this->param("id:uint:ignore,main_id:uint:ignore");
		
		$mysql = n_api("mysql")->db001;
		$rs = array();
		if(!empty($param['id'])){
			$rs['id'] = $param['id'];
			$rs['ainfo'] = $mysql->get("open_api",$param['id']);
			if(empty($rs['ainfo'])){
				throw new PException("找不到接口");
			}
			$rs['main_id'] = $rs['ainfo']['main_id'];
		}elseif(!empty($param['main_id'])){
			$rs['main_id'] = $param['main_id'];
		}else{
			throw new PException("请求错误");
		}
		$rs['pinfo'] = n_api("pbox")->get($rs['main_id']);
		
		$this->_html("apiEdit",$rs);
	}	

	
	public function apiSave(){
		$param = $this->param("id:uint:ignore,
								main_id:uint:ignore,
								paction:char,
								title:char,
								data_format:char,
								request_method:char,
								request_example:char,
								respond_example:char,
								notice:char");

		$data['paction'] = $param['paction'];
		$data['title'] = $param['title'];
		$data['data_format'] = stripslashes($param['data_format']);
		$data['request_method'] = stripslashes($param['request_method']);
		$data['request_example'] = stripslashes($param['request_example']);
		$data['respond_example'] = stripslashes($param['respond_example']);
		$data['notice'] = stripslashes($param['notice']);


		$mysql = n_api("mysql")->db001;
		if(!empty($param['id'])){
			$ainfo = $mysql->get("open_api",$param['id']);
			if(empty($ainfo)){
				throw new PException("找不到接口");
			}
			$mainId = $ainfo['main_id'];
			$mysql->update("open_api",$data,"id={$param['id']}");
			$apiId = $param['id'];
			$logMsg = "修改了接口[{$ainfo['paction']}:{$ainfo['title']}]";
		}else{
			$mainId = $data['main_id'] = $param['main_id'];
			if($mysql->isexists("select * from open_api where main_id={$data['main_id']} and paction='{$data['paction']}'")){
				throw new PException("文档已存在");
			}
			print_r($param);
			print_r($data);
			$apiId = $mysql->insert("open_api",$data);
			$logMsg = "添加了接口[{$data['paction']}:{$data['title']}]";
		}
		$mysql->update("open_main",array("utime"=>time()),"pbox_id={$mainId}");
		
		n_api("open")->log($_SESSION['ppid'],$apiId,$logMsg);
		$this->_html("apiSave");
	}

	public function view(){
		$param = $this->param("id:uint");
		$mysql = n_api("mysql")->db001;
	
		$rs['api'] = $mysql->get("open_api",$param['id']);
		$rs['apilist'] = n_api("open")->getPboxApi($rs['api']['main_id']);
		$rs['main'] = n_api("pbox")->get($rs['api']['main_id']);//$mysql->fetchFirst("select * from open_main where pbox_id='{$rs['api']['main_id']}'");
		$rs['field'] = $mysql->select("select * from open_field where api_id={$param['id']} and isdel='N'");
		$rs['log'] = $mysql->select("select * from open_log where api_id={$param['id']} order by id desc");
		
		//print_r($rs);
		$this->_html("view",$rs);
	}

	/**
	 * 编辑字段
	 */
	public function fieldEdit(){
		$param = $this->param("id:uint:ignore,apiId:uint:ignore");
		
		$mysql = n_api("mysql")->db001;
		$rs['info'] = array();
		
		if(!empty($param['id'])){
			$rs['id'] = $param['id'];
			$rs['info'] = $mysql->get("open_field",$param['id']);
		}elseif(!empty($param['apiId'])){
			$rs['apiId'] = $param['apiId'];
		}else{
			throw new PException("请求参数错误");
		}
		$this->_html("fieldEdit",$rs);
	}
	/**
	 * 保存字段
	 */
	public function fieldSave(){
		
		$param = $this->param("id:uint:ignore,
									api_id:uint:ignore,
									kname:char,
									isignore:char,
									val_example:char,
									descript:char
									");
		$param['val_example'] = stripslashes($param['val_example']);
		$param['descript'] = stripslashes($param['descript']);
									//print_r($param);exit;
		if(empty($param['id']) && empty($param['api_id'])){
			throw new PException("请求错误");
		}
		$mysql = n_api("mysql")->db001;
		
		$data['kname'] = $param['kname'];
		$data['isignore'] = $param['isignore'];
		$data['val_example'] = $param['val_example'];
		$data['descript'] = $param['descript'];
		
		
		if(!empty($param['id'])){
			$finfo = $mysql->get("open_field",$param['id']);
			$apiId = $finfo['api_id'];
			$ainfo = $mysql->get("open_api",$apiId);
			$mysql->update("open_field",$data,"id={$param['id']}");
			$logMsg = "更新了参数[{$finfo['kname']}]";
		}else{
			$apiId = $data['api_id'] = $param['api_id'];
			$ainfo = $mysql->get("open_api",$apiId);
			$mysql->insert("open_field",$param);
			$logMsg = "添加了参数[{$data['kname']}]";
		}
		
		n_api("open")->log($_SESSION['ppid'],$apiId,$logMsg);
		
		$this->_html("fieldSave");		
	}
	/**
	 * 删除一个字段
	 */
	public function fieldDel(){
		$param = $this->param("id:uint");
		$mysql = n_api("mysql")->db001;
		
		$finfo = $mysql->get("open_field",$param['id']);
		if(empty($finfo)){
			throw new PException("找不到参数");
		}
		n_api("mysql")->db001->del("open_field",$param['id']);
		
		n_api("open")->log($_SESSION['ppid'],$finfo['api_id'],"删除了参数[{$finfo['kname']}]");
		$this->_html("fieldDel");
	}
	
	public function __call($pevent,$param){
		try{
			set_time_limit(2);
			/*
			open接口是对外的入口，需要添加签名验证
			系统检测需要特殊处理
			 */
			$param = $this->param("iface:char,sign:char:ignore,url:char:ignore,scode:char:ignore");

			//读取站点配置信息
			//$siteInfo = n_api('nsite')->getByScode($param['scode']);

			// if (empty($siteInfo)) {
			// 	throw new Exception("站点信息错误:{$param['scode']}", 1006);
			// }

			//签名验证
			//$signStr = n_api('nsite')->sign($siteInfo['sign'],$param['url']);

			// if($param['sign']!=$signStr){
			// 	throw new Exception("签名错误:{$signStr}",1005);
			// }

			//exit;
			//if('RUNNING'!=$sinfo['state']){
			//	exit;
			//}
			
			$iface = $param['iface'];
			n_open($pevent)->$iface();
		} catch (Exception $e) {
			$tmp = array('code'=>$e->getCode(),'msg'=>$e->getMessage(),'ctime'=>date("Y-m-d H:i:s"));
			n_api("nlog")->add($param['scode'],'open_face_err',$e->getMessage(),$tmp);
			exit(json_encode(n_state(false, $e->getMessage())));
		}
	}
	public function __destruct(){
		if(in_array(N_ACTION,array('index','edit','save','close','del','apiList','apiEdit','apiSave','view','fieldEdit','fieldSave','fieldDel'))){
			n_mod('skin')->footer();		
		}

	}	
}


?>